Locale-based data formatting হচ্ছে এমন একটি পদ্ধতি যার মাধ্যমে প্রোগ্রামটি ব্যবহৃত অঞ্চলের ভাষা, মুদ্রা, সময়, সংখ্যা এবং তারিখের ফরম্যাট অনুযায়ী আউটপুট প্রদান করে। এটি একটি গুরুত্বপূর্ণ ধারণা যেহেতু বিভিন্ন দেশের মধ্যে সময়, তারিখ, সংখ্যা, এবং মুদ্রার আকারের মধ্যে পার্থক্য থাকে। উদাহরণস্বরূপ, ইউরোপে একটি সংখ্যাকে 1,000.50
হিসাবে লেখা হয়, কিন্তু আমেরিকাতে
সেটি 1.000,50
হতে পারে।
locale
একটি সেটিংস যা একটি প্রোগ্রামকে তার ব্যবহৃত অঞ্চলের জন্য নির্দিষ্ট কাস্টমাইজড আচরণ নির্ধারণ করতে সহায়ক হয়। locale
এ নির্দিষ্ট তথ্যের মধ্যে অন্তর্ভুক্ত হতে পারে:
সি প্রোগ্রামিং ভাষায়, locale.h
হেডার ফাইলটি locale সম্পর্কিত ফাংশন সরবরাহ করে, যা প্রোগ্রামটি নির্দিষ্ট অঞ্চলের তথ্য অনুসারে আউটপুট ফরম্যাট করে। এই ফাংশনগুলির মধ্যে গুরুত্বপূর্ণ ফাংশন হচ্ছে:
setlocale()
localeconv()
printf()
এবং scanf()
এর মাধ্যমে লোকাল বেসড ফরম্যাটিংsetlocale()
ফাংশনsetlocale()
ফাংশনটি প্রোগ্রামের locale সেট করার জন্য ব্যবহৃত হয়। এটি সাধারণত প্রাথমিকভাবে কল করা হয় যাতে পরবর্তী ফাংশনগুলির জন্য সঠিক locale সেট থাকে।
#include <locale.h>
char *setlocale(int category, const char *locale);
category
: এটি সেটিংয়ের ধরন নির্ধারণ করে, যেমন:LC_ALL
: সব ধরনের সেটিং (ভাষা, সময়, সংখ্যা, ইত্যাদি)LC_TIME
: সময় এবং তারিখের ফরম্যাটLC_NUMERIC
: সংখ্যার ফরম্যাটLC_MONETARY
: মুদ্রার ফরম্যাটLC_CTYPE
: অক্ষর সেটিংlocale
: এটি একটি স্ট্রিং যা নির্দিষ্ট অঞ্চলের নাম প্রদান করে (যেমন "en_US.UTF-8"
, "fr_FR.UTF-8"
)।setlocale()
ব্যবহার#include <stdio.h>
#include <locale.h>
int main() {
// প্রোগ্রামটি সকল অঞ্চলের সেটিং সিলেক্ট করে
setlocale(LC_ALL, "");
// লোকালাইজড আউটপুট
printf("This is a test: %f\n", 1234567.89);
return 0;
}
এখানে, setlocale(LC_ALL, "")
সেটিংটিকে সিস্টেমের লোকাল অনুসারে কনফিগার করে, যেমন ইউরোপ, মার্কিন যুক্তরাষ্ট্র, ভারত, ইত্যাদি।
localeconv()
ফাংশনlocaleconv()
ফাংশনটি লোকালাইজড নম্বর ফরম্যাটিং সংক্রান্ত তথ্য প্রদান করে, যেমন: হাজারের সেপারেটর, দশমিক চিহ্ন, মুদ্রা চিহ্ন ইত্যাদি।
#include <locale.h>
struct lconv *localeconv(void);
এই ফাংশনটি একটি struct lconv
রিটার্ন করে যা বিভিন্ন প্রোপার্টি ধারণ করে:
decimal_point
: দশমিক চিহ্নthousands_sep
: হাজারের সেপারেটরcurrency_symbol
: মুদ্রা চিহ্নmon_grouping
: মুদ্রার গ্রুপিংlocaleconv()
ব্যবহার#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_NUMERIC, "en_US.UTF-8"); // সেট locale ইউএসএ
struct lconv *loc = localeconv();
printf("Decimal point: %s\n", loc->decimal_point);
printf("Thousands separator: %s\n", loc->thousands_sep);
return 0;
}
এখানে localeconv()
ফাংশনটি লোকাল ফরম্যাটিং সম্পর্কিত তথ্য প্রদান করে, যা decimal_point
এবং thousands_sep
প্রপার্টির মাধ্যমে দশমিক চিহ্ন এবং হাজারের সেপারেটরের মান বের করে।
printf()
এবং scanf()
লোকাল ফরম্যাটিংযখন setlocale()
ব্যবহার করে লোকাল সেট করা হয়, তখন printf()
এবং scanf()
ফাংশনগুলিও লোকালাইজড আউটপুট বা ইনপুট ফরম্যাটিং অনুসরণ করে। উদাহরণস্বরূপ, printf()
ফাংশনে মুদ্রা চিহ্ন এবং স্থানীয় সংখ্যা ফরম্যাট প্রদর্শন করতে localeconv()
ব্যবহার করা যেতে পারে।
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_NUMERIC, "de_DE.UTF-8"); // জার্মান লোকাল
// জার্মান লোকাল অনুযায়ী আউটপুট
printf("Formatted number: %'.2f\n", 1234567.89);
return 0;
}
এখানে, %'.2f
ফরম্যাট স্পেসিফায়ারটি লোকাল অনুযায়ী হাজারের সেপারেটর (যেমন কমা বা স্পেস) এবং দশমিক সঠিকতা ব্যবহার করবে।
localeconv()
ফাংশনের মাধ্যমে মুদ্রা সম্পর্কিত তথ্যও পাওয়া যায়, যেমন মুদ্রা চিহ্ন, মুদ্রার আকার ইত্যাদি।
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_MONETARY, "en_US.UTF-8");
struct lconv *loc = localeconv();
printf("Currency symbol: %s\n", loc->currency_symbol);
return 0;
}
এখানে, localeconv()
এর মাধ্যমে ইউএস লোকাল অনুযায়ী মুদ্রার চিহ্ন প্রদর্শন করা হয়েছে।
setlocale()
ফাংশনটি বিভিন্ন অঞ্চলের locale সেট করতে ব্যবহৃত হয়, যা তারিখ, সময়, মুদ্রা, সংখ্যা এবং ভাষা ফরম্যাটিং নির্ধারণ করে।localeconv()
ফাংশনটি লোকাল সম্পর্কিত বিভিন্ন তথ্য যেমন হাজারের সেপারেটর, দশমিক চিহ্ন, মুদ্রা চিহ্ন প্রদান করে।printf()
এবং scanf()
ফাংশনগুলি লোকালাইজড আউটপুট এবং ইনপুট প্রদান করতে setlocale()
এবং localeconv()
এর সাথে কাজ করতে পারে।common.read_more